Game program and game apparatus

ABSTRACT

A forward direction line is set on a course, in a virtual game world, on which a player object is allowed to move. An advancing direction at a current position of the player object is determined based on the forward direction line. The advancing direction is determined as a direction in which the player object advances so as to control a movement of a player character in accordance with an acceleration instruction, and a leftward-rightward movement instruction from a player. Consequently, it is possible to assist the player in controlling a direction in which an object operated by the player moves.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.15/376,881 filed Dec. 13, 2016, which is a continuation application ofU.S. patent application Ser. No. 11/797,279, filed May 2, 2007 now U.S.Pat. No. 9,550,123, which claims priority to Japanese Patent ApplicationNo. 2006-130777, filed May 9, 2006, the entire contents of each whichare hereby incorporated by reference.

FIELD

The technology herein relates to a game program and a game apparatus formoving a player object in a virtual game world in accordance with anoperation performed by a player.

BACKGROUND AND SUMMARY

Japanese Laid-Open Patent Publication No. 2004-236799 (hereinafter,referred to as Patent Document 1) discloses that, when an objectoperated by a player goes around a curve, a movement speed of the objectis corrected in accordance with a position of the object on the curve.For example, when the object is on an inner curve, the movement speedthereof is corrected so as to be increased. On the other hand, when theobject is on an outer curve, the movement speed thereof is corrected soas to be reduced. Thus, when a speed at which the object approaches thecurve is too high and therefore the object is likely to slide off thecourse at the curve, the movement speed thereof is automaticallyreduced. Consequently, the object is able to go around the curve withoutsliding off the course.

However, in the technique disclosed in Patent Document 1, the speed iscorrected whereas a moving direction is never corrected.

Therefore, certain example embodiments provide a game program and a gameapparatus capable of subsidiarily determining a moving direction of anobject operated by a player.

Certain example embodiments have the following features to attain theobject mentioned above. The reference numerals in the parentheses areprovided to indicate an exemplary correspondence with the drawings inorder to aid in understanding certain example embodiments and are notintended to limit, in any way, the scope of the present invention.

A computer-readable storage medium according to certain exampleembodiments has stored thereon a game program for moving a player objectin a virtual game world in accordance with an operation performed by aplayer. The game program causes a computer (31) of a game apparatus (3)to function as follows:

display control means (S36) for displaying the player object on a screenof a display device (2);

advancing direction determination means (S18) for determining, by usingdata (43) used for determining an advancing direction of the playerobject set in the virtual game world, the advancing direction at acurrent position of the player object in the virtual game world, theadvancing direction representing a direction in which the player objectadvances;

advance instruction detection means for detecting for an advanceinstruction inputted by the player using an input device (6) foradvancing the player object; and

advancing movement control means (S20, S28, S30) for moving oraccelerating, in accordance with the advance instruction from the playerhaving been detected by the advance instruction detection means, theplayer object in the advancing direction having been determined by theadvancing direction determination means.

Here, the “data used for determining an advancing direction” ispredetermined data for determining, in the virtual game world, theadvancing direction at one of positions or in one of areas in thevirtual game world. The “data used for determining an advancingdirection” may be direction data (direction vector) representing adirection in the virtual game world, a plural pieces of positional datarepresenting a plurality of positions associated with each other in thevirtual game world (in this case, the plurality of positions representedby the plural pieces of positional data are connected to each other soas to represent a direction), or a predetermined equation fordetermining the direction vector. Such data is set for each of thepositions or each of the areas in the virtual game world. Further, suchdata may be set for some of the positions or some of the areas, and foreach of the remaining other positions, data for a position, among saidsome of the positions, adjacent to said each of the remaining otherpositions may be used, and for each of the remaining other areas, datafor an area, among said some of the areas, adjacent to said each of theremaining other areas may be used. Further, for the remaining otherpositions or the remaining other areas, approximation or interpolationmay be used. The “advancing direction” represents, for example, a coursedirection in a game, such as a race game, for allowing a player objectto advance along the course in the virtual game world.

The orientation (attitude) of the character may not necessarilycorrespond to the advancing direction of the character.

Further, the game program stored in the computer-readable storage mediumaccording to certain example embodiments may cause the computer tofurther function as follows:

leftward-rightward movement direction determination means (S18) fordetermining, by using the data used for determining the advancingdirection, a leftward-rightward movement direction at the currentposition of the player object in the virtual game world, theleftward-rightward movement direction representing one of a leftdirection and a right direction in which the player object moves;leftward-rightward movement instruction detection means for detectingfor a leftward-rightward movement instruction inputted by the playerusing the input device for moving the player object in one of the leftdirection and the right direction; and

leftward-rightward movement control means (S22, S28, S30) for moving oraccelerating, in accordance with the leftward-rightward movementinstruction from the player having been detected by theleftward-rightward movement instruction detection means, the playerobject in the leftward-rightward movement direction having beendetermined by the leftward-rightward movement direction determinationmeans.

Further, the data used for determining the advancing direction maycontain coordinate values (60) of a plurality of control points, in thevirtual game world, which are arranged in sequence. The advancingdirection determination means may determine the advancing direction inaccordance with at least a first vector from a first control point whichis nearest to the current position of the player object among theplurality of control points to a second control point, among theplurality of control points, which immediately precedes or immediatelyfollows, in the sequence, the first control point.

Further, the advancing direction determination means may determine theadvancing direction by using a second vector from the second controlpoint to a third control point, among the plurality of control points,immediately preceding or immediately following the second control pointin the sequence.

Here, the control points represent data which are arranged in sequencestarting with the control point nearest to the position of the playerobject in the virtual game world at a predetermined time (for example, atime at which a game starts or a time at which a predetermined conditionis satisfied). When the control points are arranged in sequence of afirst control point (the control point nearest to the position of theplayer object at the predetermined time), a second control point, athird control point, . . . , the second control point follows the firstcontrol point in the sequence.

Furthermore, a control point which is first in the sequence may benearest, among the plurality of control points, to a point (start point)at which the player object is positioned in the virtual game world whena game is started, and the advancing direction determination means maydetermine the advancing direction by using a vector obtained based on atleast two vectors including the first vector from the first controlpoint to the second control point immediately following the firstcontrol point in the sequence, and a second vector from the secondcontrol point to a third control point immediately following the secondcontrol point in the sequence.

Here, the advancing direction determination means may determine, as theadvancing direction, a vector obtained as an average (or weightedaverage) of the first vector and the second vector. Further, anothervector (a third vector from the third control point to a fourth controlpoint immediately following the third control point in the sequence) maybe used.

Moreover, a fourth vector from the first control point to a fifthcontrol point immediately preceding the first control point in thesequence may be used.

Further, a course on which the player object is allowed to move is setin the virtual game world, and the plurality of control points may beset on the course.

Moreover, the display control means may generate, by using a virtualcamera set in the virtual game world, a game image including the playerobject, and the game program stored in the computer-readable storagemedium according to certain example embodiments causes the computer tofurther function as follows,

virtual camera control means (S34) for determining, in accordance withthe advancing direction at a point which follows the current position ofthe player object and is distanced from the current position of theplayer object by a predetermined distance, a direction in which thevirtual camera is oriented so as to pick up an image.

“A predetermined distance” may not be necessarily “constant”, and may bechanged each time, for example, the course is changed or each time anarea set in the course is changed.

Further, “a point which follows the current position of the playerobject and is distanced from the current position of the player objectby a predetermined distance” may be, for example, a point obtained bymoving forward a position on the forward direction line corresponding tothe current position of the player object along the forward directionline by a predetermined distance, or a point obtained by moving, by apredetermined distance (which may be a constant distance, or a distancebased on a current movement speed), a position on the forward directionline corresponding to the current position of the player object in theadvancing direction in which the player object is currently advancing orthe moving direction in which the player object is currently moving.“The advancing direction at a point which follows the current positionof the player object and is distanced from the current position of theplayer object by a predetermined distance” is obtained by subjecting, toa similar process performed by the advancing direction determinationmeans, the aforementioned “point which follows the current position ofthe player object and is distanced from the current position of theplayer object by a predetermined distance”.

Further, the game apparatus may include a first operation section (6R)and a second operation section (6L), and the advance instructiondetection means may detect that the first operation section and thesecond operation section are alternately operated, and theleftward-rightward movement instruction detection means may detect thatone of the first operation section and the second operation section issolely operated.

Here, the advance instruction detection means detects that the firstoperation section and the second operation section are alternatelyoperated. On the other hand, the leftward-rightward movement instructiondetection means detects that one of the first operation section and thesecond operation section is solely operated (“solely” is used for a casewhere one of the first and the second operation sections is operated onetime or one of the first and the second operation sections iscontinuously operated). For example, operation histories of the firstoperation section and the second operation section are stored in amemory of the game apparatus (when a plurality of the operationhistories are stored, the operation histories are stored in orderlysequence). When the first operation section is operated (or each timethe first operation section is operated), whether the first operationsection has been operated for an immediately preceding time or thesecond operation section has been operated for an immediately precedingtime is determined, and when the first operation section has beenoperated for the immediately preceding time, it is determined that thefirst operation section is solely operated, and when the secondoperation section has been operated for the immediately preceding time,it is determined that the first operation section and the secondoperation are alternately operated. On the other hand, when the secondoperation section is operated, whether the first operation section hasbeen operated for an immediately preceding time or the second operationsection has been operated for an immediately preceding time isdetermined, and when the second operation section has been operated forthe immediately preceding time, it is determined that the secondoperation section is solely operated, and when the first operationsection has been operated for the immediately preceding time, it isdetermined that the first operation section and the second operationsection are alternately operated. When the first operation section andthe second operation section are not operated for a predetermined timeperiod, the operation history information having been stored may becleared. In this case, an operation performed for the first time afterthe operation history information has been cleared may be determined asa start of a new series of operations. When the first operation sectionor the second operation section is operated at a start of a series ofoperations, the player object may be moved forward, the player objectmay be moved in the right or left direction, or the player object maynot be moved. Further, when the first operation section is continuouslyoperated three or more times, it may be determined that the firstoperation section is solely operated. The same can be said for thesecond operation section. Furthermore, when the first operation sectionand the second operation section are alternately and continuouslyoperated three or more times, it may be determined that the firstoperation section and the second operation section are alternatelyoperated. Moreover, when another operation section (a third operationsection) is provided in addition to the first operation section and thesecond operation section, the determination may be made regardless ofthe third operation section having been operated or the determinationmay be made in consideration the third operation section having beenoperated. For example, the first operation section, the third operationsection, and the second operation section are operated in order,respectively. In this case, when the determination is made regardless ofthe third operation section having been operated, it is determined thatthe first operation section and the second operation section arealternately operated, and when the determination is made inconsideration of the third operation section having been operated, thefirst operation section and the second operation section are notalternately operated.

Further, another computer-readable storage medium according to certainexample embodiments has stored thereon a game program for moving aplayer object in a virtual game world in accordance with an operationperformed by a player. The game program causes a computer (31) of a gameapparatus (3) to function as follows:

display control means (S36) for displaying the player object on a screenof a display device (2);

leftward-rightward movement direction determination means (S18) fordetermining, by using data (43) used for determining aleftward-rightward movement direction of the player object set in thevirtual game world, the leftward-rightward movement direction at acurrent position of the player object in the virtual game world, theleftward-rightward movement direction representing one of a leftdirection and a right direction in which the player object moves;

leftward-rightward movement instruction detection means for detectingfor a leftward-rightward movement instruction inputted by the playerusing an input device (6) for moving the player object in one of theleft direction and the right direction; and leftward-rightward movementcontrol means (S22, S28, S30) for moving or accelerating, in accordancewith the leftward-rightward movement instruction from the player havingbeen detected by the leftward-rightward movement instruction detectionmeans, the player object in the leftward-rightward movement directionhaving been determined by the leftward-rightward movement directiondetermination means.

Here, the “data used for determining a leftward-rightward movementdirection” is predetermined data for determining, in the virtual gameworld, the leftward-rightward movement direction at a position or anarea in the virtual game world. The “data used for determining aleftward-rightward movement direction” may be direction data (directionvector) representing a direction in the virtual game world, a pluralpieces of positional data representing a plurality of positionsassociated with each other in the virtual game world (in this case, theplurality of positions represented by the plural pieces of positionaldata are connected to each other so as to represent a direction), or apredetermined equation for determining the direction vector. Further,the “data used for determining a leftward-rightward movement direction”may be data representing the advancing direction. In this case, theleftward-rightward movement direction determination means determines theleftward-rightward movement direction based on the data representing theadvancing direction. For example, the “leftward-rightward movementdirection” represents a left-right direction relative to the coursedirection in a game, such as a race game, for allowing a player objectto advance along the course in the virtual game world. The“leftward-rightward movement direction” is typically a directionperpendicular to the course direction. Further, the “leftward-rightwardmovement direction” may form a predetermined angle (excluding zerodegree) with the course direction. Preferably, the leftward movementdirection and the rightward movement direction may be symmetrical withrespect to the course direction, or the leftward movement direction andthe rightward movement direction may be aligned in straight line.

The other computer-readable storage medium according to certain exampleembodiments has stored thereon a game program for moving a player objectin a virtual game world in accordance with an operation performed by aplayer. The game program causes a computer (31) of a game apparatus (3)to function as follows:

display control means (S36) for displaying the player object on a screenof a display device (2);

orthogonal movement direction determination means (S18) for determining,by using data (43) used for determining an orthogonal movement directionof the player object set in the virtual game world, the orthogonalmovement direction at a current position of the player object in thevirtual game world, the orthogonal movement direction representing adirection orthogonal to an advancing direction representing a directionin which the player object advances;

orthogonal movement instruction detection means for detecting for anorthogonal movement instruction inputted by the player using an inputdevice (6) for moving the player object in the orthogonal movementdirection; and

orthogonal movement control means (S22, S28, S30) for moving oraccelerating, in accordance with the orthogonal movement instructionfrom the player having been detected by the orthogonal movementinstruction detection means, the player object in the orthogonalmovement direction having been determined by the orthogonal movementdirection determination means.

Here, the “orthogonal movement direction” represents a directionorthogonal to the advancing direction (for example, the coursedirection). For example, the “orthogonal movement direction” may be theleft-right direction relative to the advancing direction, or may be theupward-downward direction relative to the advancing direction.

A game apparatus according to certain example embodiments executes agame for moving a player object in a virtual game world in accordancewith an operation performed by a player, and comprises the followingmeans:

display control means (31, S36) for displaying the player object on ascreen of a display device (2);

advancing direction determination means (31, S18) for determining, byusing data (43) used for determining an advancing direction of theplayer object set in the virtual game world, the advancing direction ata current position of the player object in the virtual game world, theadvancing direction representing a direction in which the player objectadvances;

advance instruction detection means (31) for detecting for an advanceinstruction inputted by the player using an input device (6) foradvancing the player object; and

advancing movement control means (31, S20, S28, S30) for moving oraccelerating, in accordance with the advance instruction from the playerhaving been detected by the advance instruction detection means, theplayer object in the advancing direction having been determined by theadvancing direction determination means.

Another game apparatus according to certain example embodiments executesa game for moving a player object in a virtual game world in accordancewith an operation performed by a player, and comprises the followingmeans:

display control means (31, S36) for displaying the player object on ascreen of a display device (2);

leftward-rightward movement direction determination means (31, S18) fordetermining, by using data (43) used for determining aleftward-rightward movement direction of the player object set in thevirtual game world, the leftward-rightward movement direction at acurrent position of the player object in the virtual game world, theleftward-rightward movement direction representing one of a leftdirection and a right direction in which the player object moves; and

leftward-rightward movement instruction detection means (31) fordetecting for a leftward-rightward movement instruction inputted by theplayer using an input device (6) for moving the player object in one ofthe left direction and the right direction; and

leftward-rightward movement control means (31, S22, S28, S30) for movingor accelerating, in accordance with the leftward-rightward movementinstruction from the player having been detected by theleftward-rightward movement instruction detection means, the playerobject in the leftward-rightward movement direction having beendetermined by the leftward-rightward movement direction determinationmeans.

The other game apparatus according to certain example embodimentsexecutes a game for moving a player object in a virtual game world inaccordance with an operation performed by a player, and comprises thefollowing means:

display control means (31, S36) for displaying the player object on ascreen of a display device (2);

orthogonal movement direction determination means (31, S18) fordetermining, by using data (43) used for determining an orthogonalmovement direction of the player object set in the virtual game world,the orthogonal movement direction at a current position of the playerobject in the virtual game world, the orthogonal movement directionrepresenting a direction orthogonal to an advancing directionrepresenting a direction in which the player object advances;

orthogonal movement instruction detection means (31) for detecting foran orthogonal movement instruction inputted by the player using an inputdevice (6) for moving the player object in the orthogonal movementdirection; and

orthogonal movement control means (31, S22, S28, S30) for moving oraccelerating, in accordance with the orthogonal movement instructionfrom the player having been detected by the orthogonal movementinstruction detection means, the player object in the orthogonalmovement direction having been determined by the orthogonal movementdirection determination means.

According to certain example embodiments, it is possible to subsidiarilydetermine a moving direction of an object operated by a player.

These and other objects, features, aspects and advantages of certainexample embodiments will become more apparent from the followingdetailed description when taken in conjunction with the accompanyingdrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an external view illustrating a game system 1 according to anembodiment;

FIG. 2 is an external view illustrating the game system 1 using acommonly used controller;

FIG. 3 is a block diagram showing an internal configuration of the gameapparatus body 3;

FIG. 4 is a diagram illustrating an exemplary game image displayed on ascreen of a television 2;

FIG. 5 is a diagram illustrating a relationship between a forwarddirection line and an advancing direction of a character;

FIG. 6 is a diagram illustrating a memory map of a work memory 32;

FIG. 7 is a diagram illustrating a specific example of forward directionline data 43;

FIG. 8 is a diagram illustrating a specific example of control pointdata 44;

FIG. 9 is a diagram illustrating a specific example of character controldata 45;

FIG. 10 is a flow chart showing a flow of a process performed by a CPU31;

FIG. 11 is a diagram illustrating an advancing direction vector, a rightdirection vector, and an upward direction vector of the character;

FIG. 12 is a diagram illustrating an advance vector, aleftward-rightward movement vector, an inertial vector and agravitational vector;

FIG. 13 is a diagram illustrating a relationship between the forwarddirection line and the control points;

FIG. 14 is a diagram illustrating in detail interpolation process;

FIG. 15 is a diagram illustrating an example where a virtual camera iscontrolled;

FIG. 16 is a diagram illustrating another example where the virtualcamera is controlled;

FIG. 17 is a diagram illustrating still another example where thevirtual camera is controlled;

FIG. 18 is a diagram illustrating a specific example of the forwarddirection line; and

FIG. 19 is a diagram illustrating another specific example of theforward direction line.

DETAILED DESCRIPTION

Hereinafter, a game system according to an embodiment will be describedwith reference to the drawings.

FIG. 1 is an external view showing a configuration of the game systemaccording to the embodiment. As shown in FIG. 1, a game system 1comprises a television 2, a game apparatus body 3, and a congacontroller 6, and has mounted thereon a DVD-ROM 4 and a memory card 5.The DVD-ROM 4 and the memory card 5 are mounted on the game apparatusbody 3 in a removable manner. The conga controller 6 is connected, by acommunication cable, to any of four controller port connectors providedon the game apparatus body 3. The television 2 is connected to the gameapparatus body 3 by an AV cable or the like. Note that, the gameapparatus body 3 and the controller 6 may communicate with each other byradio communication.

The conga controller 6 is provided with a microphone 6M and threeswitches: a start button 6S; a right strike surface 6R; and a leftstrike surface 6L. As described herein below, a player can control amovement of a character in a virtual game world by hitting the rightstrike surface 6R or the left strike surface 6L.

Note that, a commonly used controller 7 as shown in FIG. 2 may be usedinstead of the conga controller 6. The controller 7 is provided with aplurality of switches such as a start button 7S, an A button 7A, an Rbutton 7R and an L button 7L.

The DVD-ROM 4 fixedly stores a game program, game data and the like. TheDVD-ROM 4 is mounted on the game apparatus body 3 when the player playsa game. Here, instead of the DVD-ROM 4, an external storage medium suchas a CD-ROM, an MO, a memory card, a ROM cartridge or the like may beused as means for storing the game program and the like.

The game apparatus body 3 reads the game program stored in the DVD-ROM4, and then performs a process in accordance with the read game program.

The television 2 displays, on a screen, image data outputted from thegame apparatus body 3.

The memory card 5 has a rewritable storage medium, e.g., a flash memory,as a backup memory for storing data such as saved data of the game.

FIG. 3 is a block diagram showing an internal configuration of the gameapparatus body 3. Hereinafter, each component of the game system 1 willbe described in more detail with reference to FIG. 3.

As shown in FIG. 3, the game apparatus body 3 comprises a CPU 31, a workmemory 32, an external memory interface (I/F) 33, a controller interface(I/F) 34, a video RAM (VRAM) 35, a graphics processing unit (GPU) 36 andan optical disc drive 37.

In order for the game to start, the optical disc drive 37 drives theDVD-ROM 4 mounted on the game apparatus body 3, and then the gameprogram stored in the DVD-ROM 4 is loaded into the work memory 32. Thegame starts when the CPU 31 executes the program in the work memory 32.After the game starts, the player plays the game by using the congacontroller 6. In accordance with an operation performed by the player,the conga controller 6 outputs operation data to the game apparatus body3. The operation data outputted from the conga controller 6 is suppliedto the CPU 31 via the controller I/F 34. The CPU 31 performs a gameprocess based on inputted operation data. The GPU 36 is used for imagedata generation and the like performed in the game process.

The GPU 36 performs, for coordinates of a solid model of an object orfigure (e.g., an object comprised of polygons) placed in athree-dimensional virtual game world, arithmetic processing (e.g.,rotation, scaling and deformation of the solid model, and coordinatetransformation from a world coordinate system to a camera coordinatesystem or a screen coordinate system). Further, the GPU 36 generates agame image by writing, based on a predetermined texture, color data (RGBdata) of each pixel of a solid model projected on the screen coordinatesystem into the VRAM 35. The GPU 36 thus generates the game image to bedisplayed on the television 2, and outputs the game image to thetelevision 2 as necessary. Although the present embodiment shows ahardware configuration in which a memory dedicated for image processing(VRAM 35) is separately provided, other memory configurations may beprovided. For example, a UMA (Unified Memory Architecture) system, inwhich a part of the work memory 32 is used as a memory for imageprocessing, may be used.

The work memory 32 stores various programs and pieces of data loadedfrom the DVD-ROM 4. These pieces of data include, for example, data,which is related to polygons comprising a three-dimensional model placedin the virtual game world, and a texture used for coloring the polygons.

FIG. 4 shows an exemplary game image displayed on the screen of thetelevision 2. While certain example embodiments may apply to a racegame, other embodiments may be applied to any type of game.

On the screen of the television 2, a race course set in the virtual gameworld, a player character to be operated by a player, and obstacles andcoins placed on the race course are displayed. The player uses the congacontroller 6 to operate the player character such that the number oftimes the player character hits against the obstacles is minimized, thenumber of coins the player character obtains is maximized, and theplayer character reaches a goal as quickly as possible.

A player is allowed to input, by using the conga controller 6,instructions such as an acceleration instruction, a rightward movementinstruction, a leftward movement instruction, and a decelerationinstruction.

It is possible to input the acceleration instruction when the rightstrike surface 6R and the left strike surface 6L of the conga controller6 are alternately hit repeatedly. When the acceleration instruction isinputted, the character accelerates forward (that is, in the direction(hereinafter, referred to as “advancing direction”) in which thecharacter advances). At this time, the faster the right strike surface6R and the left strike surface 6L are alternately hit repeatedly (forexample, as the number of times per second the right strike surface 6Rand the left strike surface 6L are alternately hit repeatedly isincreased), the greatly the character is accelerated.

It is possible to input the rightward movement instruction when theright strike surface 6R of the conga controller 6 is repeatedly hit.When the rightward movement instruction is inputted, the character movesin the right direction (in the right direction relative to the advancingdirection of the character). At this time, the faster a playerrepeatedly hits the right strike surface 6R, the faster the charactermoves in the right direction.

It is possible to input the leftward movement instruction when the leftstrike surface 6L of the conga controller 6 is repeatedly hit. When theleftward movement instruction is inputted, the character moves in theleft direction (in the left direction relative to the advancingdirection of the character). At this time, the faster a playerrepeatedly hits the left strike surface 6L, the faster the charactermoves in the left direction.

It is possible to input the deceleration instruction when the rightstrike surface 6R and the left strike surface 6L of the conga controller6 are long-pressed for more than a predetermined time period. When thedeceleration instruction is inputted, the character decelerates.

In the present embodiment, as shown in FIG. 5, a forward direction lineis set along the race course in the virtual game world, and theadvancing direction of the character is updated, as necessary, so as tocontinue to be parallel to the forward direction line. When a playerinputs the acceleration instruction described above, a componentrepresenting a forward speed of the character has its magnitudeincreased. Similarly, when a player inputs the deceleration instructiondescribed above, a component representing a forward speed of thecharacter has its magnitude reduced. The forward direction line may beset such that one forward direction line is branched into a plurality offorward direction lines as shown in FIG. 18, or a plurality of forwarddirection lines are merged into one forward direction line as shown inFIG. 19.

The right direction for the character is the rightward directionrelative to the advancing direction of the character, and is alsoperpendicular to the advancing direction of the character. When a playerinputs the rightward movement instruction described above, the charactermoves in the right direction. When a player inputs the leftward movementinstruction described above, the character moves in the directionopposite to the right direction.

As described above, in the present embodiment, the advancing directionof the character is updated as necessary so as to continue to beparallel to the forward direction line. Therefore, when the charactergoes around a curve, the player does not need to take into considerationthe current moving direction of the character and is allowed to easilymove the character toward the inner curve (for example, toward thevicinity of the course right line) or toward the outer curve (forexample, toward the vicinity of the course left line) by simplyinputting the rightward movement instruction or the leftward movementinstruction. In particular, in a conventional race game, when a steeringwheel is too sharply turned on a curve, the character may be turnedtoward the direction perpendicular to the course direction or toward thedirection opposite to the course direction. In this case, it istroublesome to turn and move the character in a correct direction again.However, according to the present embodiment, such a state can beavoided, thereby greatly enhancing the controllability.

Hereinafter, an operation performed by the game apparatus body 3according to the present embodiment will be described in detail.

FIG. 6 shows a memory map of the work memory 32. The work memory 32stores a game program 40, game image data 41, race course data 42,forward direction line data 43, control point data 44, and charactercontrol data 45.

The game image data 41 includes data for a character image and data fora background image, and is used for generating a game image to bedisplayed on the screen of the television 2.

The race course data 42 represents a shape of a race course in thevirtual game world.

The forward direction line data 43, representing the forward directionline shown in FIG. 5, is read from the DVD-ROM 4 and stored in the workmemory 32 when the game is played. In the present embodiment, theforward direction line is defined by a collection of a plurality ofcontrol points (for example, P1, P2, P3, P4, P5 arranged in sequence asshown in FIG. 13, and P1 is a first control point (that is, a controlpoint nearest to a start point) in the sequence) arranged in sequence.Although the plurality of control points represent discrete data,interpolation among the plurality of control points is performed using aspline curve as necessary so as to obtain the continuous smooth forwarddirection line.

FIG. 7 shows a specific example of the forward direction line data 43.In FIG. 7, the forward direction line data 43 contains the number ofcontrol points 50, three-dimensional coordinates of the respectivecontrol points 51, normal vectors of the respective control points 52,and branch information 53. The number of control points is, for example,200 to 300 for each course. Further, each of the control points has thenormal vector set therefor. The normal vector, representing a slope ofthe course at each of the control points, is a unit vector representingan upward direction which is perpendicular to the traveling surface. Thebranch information 53 represents a branching point (control point P12shown in FIG. 18) and a merging point (control point P33 shown in FIG.19) of the forward direction line.

In FIG. 6, when the game is started, the control point data 44 is set,for each of the control points, based on the forward direction line data43.

FIG. 8 shows a specific example of the control point data 44. In FIG. 8,the control point data 44 includes, for each of the control points,three-dimensional coordinates 60, a forward direction vector 61, anupward direction vector 62, a right direction vector 63, a curve rate64, and an accumulated distance from a start point 65.

Further, the control points are arranged in sequence. This is not shown.For example, the sequence in which the control points are stored in amemory is the same as the sequence in which the control points arearranged. Each of the control points may have set therefor datarepresenting its turn in the sequence, or may have set thereforinformation representing the control point immediately following saideach of the control points.

The forward direction vector 61, the upward direction vector 62, and theright direction vector 63 are used to determine the advancing directionof the character, the right direction for the character, or the like asdescribed above.

The forward direction vector 61 is a unit vector representing adirection in which the forward direction line extends from each of thecontrol points. In other words, the forward direction vector 61 is aunit vector representing a direction of a line tangent to the forwarddirection line at each of the control points or a direction similar tothe direction of the line tangent to the forward direction line. In thepresent embodiment, for example, the forward direction vector 61 of thecontrol point P3 shown in FIG. 13 is obtained as an average between aunit vector representing a direction to the control point P3 from thecontrol point P2 immediately preceding the control point P3 and a unitvector representing a direction from the control point P3 to the controlpoint P4 immediately following the control point P3. The forwarddirection vector 61 and the like may be previously calculated and storedin the DVD-ROM 4, or may be calculated based on the three-dimensionalcoordinates of the control point when the game is started, or may becalculated as necessary during the game. In FIG. 13, the point Pcrepresents a current position of the character.

The upward direction vector 62 is the same as the normal vector 52 ofthe corresponding one of the control points.

The right direction vector 63 is a unit vector which represents theright direction relative to the advancing direction and is perpendicularto the forward direction vector 61 and the upward direction vector 62 ofeach of the control points. The right direction vector 63 is determinedbased on the forward direction vector 61 and the upward direction vector62.

The curve rate 64 represents a curvature (that is, a curvature of thecourse) of the forward direction line at each of the control points. Inthe present embodiment, for example, the curve rate 64 of the controlpoint P3 shown in FIG. 13 represents a relative angle between the vectorfrom the control point P2 to the control point P3 and the vector fromthe control point P3 to the control point P4. Therefore, when a certainone of the control points has the curve rate 64 of zero, the forwarddirection line represents a straight line at the certain one of thecontrol points. The larger the absolute value of the curve rate 64 is,the shaper curve the forward direction line of the control pointrepresents.

The accumulated distance from a start point 65 represents a distance (apath) to each of the control points from a start point on the course inthe virtual game world.

In FIG. 6, the character control data 45 is used to control a movementand an attitude of the character in the virtual game world. Thecharacter control data 45 is updated as necessary while the game isbeing played.

FIG. 9 shows a specific example of the character control data 45. InFIG. 9, the character control data 45 includes a current position 70, anadvancing direction vector 71, an upward direction vector 72, a rightdirection vector 73, a curve rate 74, an accumulated distance from astart point 75, a current position of the character on the forwarddirection line 76, an internal speed 77, a leftward-rightward movementinput value 78, an advance vector 79, a leftward-rightward movementvector 80, an inertial vector 81, a gravitational vector 82, and amovement vector 83.

The current position 70, represented as three-dimensional coordinates,indicates a current position of the character in the virtual game world.

The advancing direction vector 71 is a unit vector representing adirection in which the character advances as described above, as shownin FIG. 11. The advancing direction vector 71 of the character isdetermined by interpolation based on the forward direction vector 61 ofeach of two control points adjacent to the current position of thecharacter. Here, the two control points adjacent to the current positionof the character correspond to the control point which is nearest to thecurrent position of the character, on the course, among the controlpoints preceding the current position of the character, and the controlpoint which is nearest to the current position of the character, on thecourse, among the control points following the current position of thecharacter. The interpolation will be described below in detail.

The upward direction vector 72 is a unit vector representing the upwarddirection relative to the character as shown in FIG. 11. The upwarddirection vector 72 for the character is determined by interpolationbased on the upward direction vector 62 of each of the two controlpoints adjacent to the current position of the character in a similarmanner to that for the advancing direction vector 71.

The right direction vector 73 is a unit vector representing the rightdirection relative to the character as described above, as shown in FIG.11. The right direction vector 73 for the character is determined byinterpolation based on the right direction vector 63 of each of the twocontrol points adjacent to the current position of the character in asimilar manner to that for the advancing direction vector 71.

The curve rate 74 represents a curvature (that is, a curvature of thecourse) of the forward direction line at the current position of thecharacter. The curve rate 74 is determined by interpolation based on thecurve rate 64 of each of the two control points adjacent to the currentposition of the character in a similar manner to that for the advancingdirection vector 71.

The accumulated distance from the start point 75 represents a distance(a path) to the current position of the character from the start pointof the course in the virtual game world. In the present embodiment, thedistance (path) from the start point of the course in the virtual gameworld to the current position of the character on the forward directionline 76 described below is determined as the accumulated distance fromthe start point 75.

The current position of the character on the forward direction line 76represents a position, on the forward direction line, corresponding tothe current position 70 of the character. For example, as shown in FIG.13, the current position of the character on the forward direction line76 is determined as a position obtained by projecting, onto the forwarddirection line, the current position 70 of the character in thedirection perpendicular to the forward direction line.

The internal speed 77 is a scalar value representing a magnitude of amovement speed of the character. The internal speed 77 is increased orreduced depending on a topography, or the acceleration instruction orthe deceleration instruction from the player.

The leftward-rightward movement input value 78 is a scalar valuerepresenting a magnitude of a speed at which the character moves in theright direction. The leftward-rightward movement input value 78 is apositive value based on the rightward movement instruction from theplayer or a negative value based on the leftward movement instructionfrom the player.

The advance vector 79, the leftward-rightward movement vector 80, theinertial vector 81, and the gravitational vector 82 are used todetermine, in each frame, a destination (that is, a moving direction anda moving distance) to which the character is moved.

The advance vector 79 has the same direction as the advancing directionvector 71 of the character as shown at 1202 in FIG. 12, and has amagnitude based on the internal speed 77.

The leftward-rightward movement vector 80 has the same direction as theright direction vector 73 of the character or the direction opposite tothe direction of the right direction vector 73, as shown at 1206 in FIG.12. The direction of the leftward-rightward movement vector 80 dependson a sign of the leftward-rightward movement input value 78. When theleftward-rightward movement input value 78 is positive (that is, aplayer inputs the rightward movement instruction), theleftward-rightward movement vector 80 has the same direction as theright direction vector 73 of the character. When the leftward-rightwardmovement input value 78 is negative (that is, a player inputs theleftward movement instruction), the leftward-rightward movement vector80 has the direction opposite to the direction of the right directionvector 73 of the character. The leftward-rightward movement vector 80has a magnitude based on an absolute value of the leftward-rightwardmovement input value 78.

The inertial vector 81 has the same direction as the right directionvector 73 of the character or the direction opposite to the direction ofthe right direction vector 73 of the character as shown at 1204 in FIG.12. The inertial vector 81 is used to move, toward the outside of thecurve, the character going around the curve by using centrifugal force.The direction of the inertial vector 81 depends on a sign of the curverate 74 included in the character control data. When the sign of thecurve rate 74 represents a right-hand curve, the inertial vector 81 hasthe direction opposite to the direction of the right direction vector 73of the character. When the sign of the curve rate 74 represents aleft-hand curve, the inertial vector 81 has the same direction as theright direction vector 73 of the character.

The gravitational vector 82 has the same direction as the upwarddirection vector 72 of the character or the direction opposite to thedirection of the upward direction vector 72 of the character as shown at1208 in FIG. 12. The gravitational vector 82 is used to cause thecharacter to fly at the same height (the height in the virtual gameworld) as that of the forward direction line. The direction of thegravitational vector 82 depends on a larger/smaller relationship betweenthe height of the current position 70 of the character and the height ofthe current position of the character on the forward direction line 76.When the current position 70 of the character has a greater height thanthe current position of the character on the forward direction line 76,the gravitational vector 82 has the direction opposite to the directionof the upward direction vector 73 of the character. When the currentposition 70 of the character has a smaller height than the currentposition of the character on the forward direction line 76, thegravitational vector 82 has the same direction as the upward directionvector 73 of the character.

The movement vector 83 is a vector obtained by combining the advancevector 79, the leftward-rightward movement vector 80, the inertialvector 81, and the gravitational vector 82. Based on the movement vector83, the current position 70 of the character is updated in each frame asnecessary.

The virtual camera control data 46 shown in FIG. 6 represents data (suchas a virtual camera position, a sight point, an attitude and an angle ofview) used to control a virtual camera positioned in the virtual gameworld so as to generate the game image. The virtual camera control data46 is updated as necessary in accordance with the movement of thecharacter.

Hereinafter, with reference to a flow chart shown in FIG. 10, a flow ofa process performed by the CPU 31 based on the game program 40 will bedescribed.

In FIG. 10, when execution of the game program 40 is started, the CPU 31initially sets, based on the forward direction line data 43, the controlpoints represented by the control point data 44, as described above, instep S10.

In step S12, an initial game image is displayed based on the game imagedata 41 and the race course data 42. At this time, each of parametersincluded in the character control data 45 is set so as to have aninitial value.

In step S14, the control point nearest to the character among thecontrol points preceding the character (that is, at the side of thestart point on the course) is determined based on the current position70 of the character and the three-dimensional coordinates 60 of each ofthe control points included in the control point data 44. For example,when the current position of the character corresponds to a point Pcshown in FIG. 13, the control point nearest to and preceding thecharacter corresponds to the control point P3.

In step S16, the control point nearest to the character among thecontrol points following the character (that is, at the side of the goalpoint on the course) is determined based on the current position 70 ofthe character and the three-dimensional coordinates 60 of each of thecontrol points included in the control point data 44. For example, whenthe current position of the character corresponds to the point Pc shownin FIG. 13, the control point nearest to and following the charactercorresponds to the control point P4.

Various methods for determining the control points in step S14 and stepS16 may be provided. One of the various methods is as follows. Forexample, the control point (control point P3 in an example shown in FIG.13) nearest to the current position Pc of the character is obtained. Aninner product of the forward direction vector (Xf3, Yf3, Zf3) (refer toFIG. 14) of the control point P3 and the three-dimensional coordinates(X3, Y3, Z3) of the control point P3 is subtracted from the innerproduct of the forward direction vector (Xf3, Yf3, Zf3) of the controlpoint P3 and the current position (Xc, Yc, Zc) of the character.Depending on whether the subtraction result represents a positive valueor a negative value, whether the control point P3 precedes or followsthe character is determined. In the example shown in FIG. 13, the resultof the subtraction based on the two inner products represents a positivevalue, and therefore the control point P3 is determined as the controlpoint nearest to and preceding the character, and the control point P4immediately following the control point P3 is determined as the controlpoint nearest to and following the character.

Further, in step S14 and step S16, the control point nearest to thecurrent position 70 of the character may be determined based on “thecontrol point nearest to the character” having been used for animmediately preceding time. Specifically, for example, each time “thecontrol point nearest to the character” is determined, informationrepresenting “the control point nearest to the character” is stored inthe work memory 32 of the game apparatus body 3. When “the control pointnearest to the character” is to be determined, the control points in thevicinity of (or following) “the control point nearest to the character”which has been used for the immediately preceding time are used aspotential control points, and “the control point nearest to thecharacter” may be determined from among the potential control points.For example, a distance between the current position 70 of the characterand each of the control points following “the control point nearest tothe character” having been used for the immediately preceding time issequentially calculated. When the distance between the current position70 of the character and a certain control point among the control pointsfollowing “the control point nearest to the character” having been usedfor the immediately preceding time becomes greater than the distancebetween the current position 70 of the character and a control pointimmediately preceding the certain control point, the control pointimmediately preceding the certain control point is determined as “thecontrol point nearest to the character”.

In step S18, based on the control point data 44 representing each of thetwo control points having been determined in step S14 and step S16, theadvancing direction vector 71, the upward direction vector 72, the rightdirection vector 73, the curve rate 74 and the accumulated distance fromthe start point 75 for the character are determined.

The advancing direction vector 71 of the character is determined throughthe interpolation based on the forward direction vectors 61 of each ofthe two control points having been determined in step S14 and step S16.A specific example of the method for determining the advancing directionvector 71 of the character will be described with reference to FIG. 14.

Firstly, a position of the character between the two control points P3and P4 is determined. Specifically, a distance Db and a distance Dfshown in FIG. 14 are obtained. The distance Db represents a distance tothe character relative to the control point P3 in the directionrepresented by the forward direction vector (Xf3, Yf3, Zf3) of thecontrol point P3. The distance Db is calculated by subtracting the innerproduct of the forward direction vector (Xf3, Yf3, Zf3) of the controlpoint P3 and the three-dimensional coordinates (X3, Y3, Z3) of thecontrol point P3 from the inner product of the forward direction vector(Xf3, Yf3, Zf3) of the control point P3 and the current position (Xc,Yc, Zc) of the character. The distance Df represents a distance to thecharacter relative to the control point P4 in the direction representedby the forward direction vector (Xf4, Yf4, Zf4) of the control point P4.The distance Df is calculated by subtracting the inner product of theforward direction vector (Xf4, Yf4, Zf4) of the control point P4 and thecurrent position (Xc, Yc, Zc) of the character from the inner product ofthe forward direction vector (Xf4, Yf4, Zf4) of the control point P4 andthe three-dimensional coordinates (X4, Y4, Z4) of the control point P4.

Next, a weighted average of the forward direction vectors of the twocontrol points P3 and P4 is obtained based on the distances Db and Df soas to obtain the advancing direction vector 71 of the character.Specifically, the advancing direction vector 71 of the character iscalculated as ((Xf3, Yf3, Zf3).times.Db±(Xf4, Yf4,Zf4).times.Df)/(Db+Df). That is, the forward direction vector 61 of thecontrol point which is the nearer to the character of the two controlpoints P3 and P4 exerts a greater influence on the advancing directionvector 71 of the character.

The interpolation described above allows the direction of the advancingdirection vector 71 of the character to smoothly vary in accordance withthe movement of the character, thereby enabling improved control of themovement of the character in a natural manner.

The aforementioned method for determining the advancing direction vector71 of the character is only an example. The advancing direction vector71 of the character may be determined in a simplified manner or acomplicated manner as compared to the aforementioned method. Forexample, the forward direction vector of the control point P3 nearest tothe character may be determined as the advancing direction vector 71 ofthe character. In another exemplary method, the advancing directionvector 71 of the character may be determined based on the forwarddirection vectors of three or more control points. In still anotherexemplary method, a line tangent to the forward direction line at thecurrent position of the character on the forward direction line 76 isdetected, and the advancing direction vector 71 of the character may bedetermined so as to represent the direction of the line tangent to theforward direction line.

The upward direction vector 72, the right direction vector 73, and thecurve rate 74 of the character may be determined in a similar manner.That is, the upward direction vector 72 of the character is obtained asa weighted average of the upward direction vectors of the two controlpoints P3 and P4 based on the distances Db and Df. The right directionvector 73 of the character is obtained as a weighted average of theright direction vectors of the two control points P3 and P4 based on thedistances Db and Df. The curve rate 74 is obtained as a weighted averageof the curve rates of the two control points P3 and P4 based on thedistances Db and Df.

The accumulate distance from the start point 75 is obtained by addingthe distance Db to the accumulated distance from the start point 65representing an accumulated distance from the start point to the controlpoint P3. The accumulated distance from the start point 75 may beobtained by subtracting the distance Df from the accumulated distancefrom the start point 65 representing an accumulated distance from thestart point to the control point P4.

In step S20, the advance vector 79 is determined. Specifically, theinternal speed 77 is updated, and a vector having a magnituderepresented by the internal speed 77 having been updated, and adirection represented by the advancing direction vector 71 of thecharacter is set as the advance vector 79. An exemplary method forupdating the internal speed 77 according to the present embodiment is asfollows. A magnitude of the movement vector 83 determined in animmediately preceding frame is determined as the internal speed 77.Thereafter, when the acceleration instruction is inputted by a player,the internal speed 77 is increased, and when the decelerationinstruction is inputted by a player, the internal speed 77 is reduced.At this time, the increased amount of the internal speed 77 or thereduced amount of the internal speed 77 may be determined in accordancewith a speed at which the strike surface is repeatedly hit as describedabove. As described above, the magnitude of the advance vector 79 isdetermined based on the magnitude of the movement vector 83 having beendetermined in the immediately preceding frame, and therefore, unlike inthe conventional art, it is possible to prevent the character goingaround a curve from accelerating or decelerating in an unnatural manner.

Further, when the acceleration instruction is not inputted by a player,the internal speed may not be reduced, that is, a value of the internalspeed having been obtained in the immediately preceding frame may bemaintained.

In step S22, the leftward-rightward movement vector 80 is determined.Specifically, the leftward-rightward movement input value 78 is updated,and a vector having a magnitude represented by the leftward-rightwardmovement input value 78 having been updated, and a direction representedby the right direction vector 73 of the character is set as theleftward-rightward movement vector 80. An exemplary method for updatingthe leftward-rightward movement input value 78 according to the presentembodiment is as follows. When the rightward movement instruction isinputted by a player, the leftward-rightward movement input value 78 isset as a positive value, and when the leftward movement instruction isinputted by a player, the leftward-rightward movement input value 78 isset as a negative value. At this time, the absolute value of theleftward-rightward movement input value 78 may be determined dependingon a speed at which the strike surface is repeatedly hit as describedabove.

In step S24, the inertial vector 81 is determined. Specifically, avector having a magnitude based on a value of the curve rate 74, and thesame direction as the right direction vector 73 of the character or adirection opposite to the direction of the right direction vector 73 ofthe character as described above is set as the inertial vector 81. Thatis, the vector to be set as the inertial vector 81 has a directionopposite to the direction of the right direction vector 73 of thecharacter when the character goes around a right-hand curve, and has thesame direction as the right direction vector 73 of the character whenthe character goes around a left-hand curve.

In step S26, the gravitational vector 82 is determined. Specifically, avector having a predetermined magnitude and a direction based on alarger/smaller relationship between the height of the current position70 of the character and the height of the current position of thecharacter on the forward direction line 76 is set as the gravitationalvector 82. Here, the predetermined magnitude may be constant, or dependon the height difference.

In step S28, the movement vector 83 is determined. Specifically, avector obtained by combining the advance vector 79, theleftward-rightward movement vector 80, the inertial vector 81, and thegravitational vector 82, which are determined in steps S20, S22, S24,and S26, respectively, is set as the movement vector 83. The movementvector 83 may be corrected in consideration of influences of topography(ascending slope or friction), and air resistance.

In step S30, the current position 70 of the character is updated basedon the movement vector 83 having been determined in step S28.Specifically, the current position 70 is updated so as to move thecharacter over a distance represented by the movement vector 83 in adirection represented by the movement vector 83.

In the present embodiment, the direction represented by the movementvector may be referred to as “moving direction” and the directionrepresented by the advancing direction vector or the advance vector maybe referred to as “advancing direction”.

In step S32, an attitude of the character is determined. The attitude ofthe character may be determined based on the advancing direction vector71 of the character, the upward direction vector 72, and the rightdirection vector 73 or may be determined regardless of these vectors.For example, when a player inputs the rightward movement instruction,the character may be sloped to the right so as not to be influenced bythe upward direction vector 72 of the character.

In step S34, the virtual camera control data 46 is updated based on thecurrent position 70 of the character. In a conventional typical racegame, the virtual camera is positioned so as to pick up an image of thecharacter from therebehind. However, in the present embodiment, arelative position of the virtual camera to the current position of thecharacter is changed depending on the forward direction line.

Specifically, as shown in FIGS. 15 and 16, orientation of the virtualcamera is updated, as necessary, so as to continue to be parallel to theforward direction (that is, the direction of the line tangent to theforward direction line) at a point distanced from the current position(more specifically, the current position of the character on the forwarddirection line) of the character by a predetermined distance d in thecourse forward direction. Therefore, for example, when the character isgoing around a blind curve as shown in FIG. 16, the virtual camera hasits orientation updated so as to provide a view beyond the curve.Therefore, a player can control the character while confirming the viewbeyond the curve, thereby improving the controllability. The orientationof the virtual camera may be updated, as necessary, so as to continue tobe parallel to the forward direction vector 61 of the control pointfollowing, by a predetermined number of control points, the controlpoint nearest to the character, instead of the forward direction at thepoint distanced from the current position of the character by thepredetermined distance d. The position of the virtual camera isdetermined based on the current position of the player character. Forexample, the virtual camera is positioned so as to be distanced from thecurrent position (or, a position which is distanced from the currentposition of the player character by a predetermined distance (forexample, a position which is distanced from the current position of theplayer character in the forward direction or the moving direction by apredetermined distance)) of the player character by a predetermineddistance in the direction opposite to the direction corresponding to theorientation of the virtual camera having been determined as describedabove.

Further, the relative angle θ of the virtual camera to the advancingdirection of the character may be changed depending on the curvature ofthe forward direction line at either the current position (morespecifically, the current position on the forward direction line) of thecharacter or a point following the current position of the character bya predetermined distance as shown in FIG. 17, instead of controlling theposition and the orientation of the virtual camera based on the forwarddirection indicated by the forward direction line. Further, the relativeangle .theta. of the virtual camera to the advancing direction of thecharacter may be changed depending on the curve rate 74.

In step S36, the game image is updated based on the current position 70of the character having been updated in step S30, the attitude of thecharacter having been determined in step S32, and the virtual cameracontrol data 46 having been updated in step S34. The process is returnedto step S14.

The process of steps S14, S16, S18, S20, S22, S24, S26, S28, S30, S32,S34, and S36 described above is repeated in a predetermined cycle (forexample, every 1/60 seconds), so as to display, on the screen of thetelevision 2, the state of the character moving on the course inaccordance with the instruction from a player.

As described above, according to the present embodiment, the advancingdirection of the character is automatically corrected so as to continueto be parallel to the forward direction indicated by the forwarddirection line. Therefore, when the character goes around a curve, aplayer is allowed to appropriately move the character by performing asimple operation without considering the current moving direction of thecharacter. For example, in a conventional race game, when a player failsto appropriately control the character in accordance with the curvatureof the curve, the character is moved toward the inside or the outside ofthe course, thereby causing the character to easily slide off thecourse. However, according to the present embodiment, even when a playerfails to control the character, the character is prevented from movingtoward the inside or the outside of the course, thereby preventing thecharacter from easily sliding off the course.

Further, the advancing direction of the character is automaticallycorrected as described above, and therefore it is unnecessary for aplayer to repeatedly hit the strike surfaces of the conga controller 6when the character goes around a sharp curve, thereby enabling a playerpoor at repeatedly hitting the strike surfaces to easily operate thecharacter.

Moreover, according to the present embodiment, when the character goesaround a curve, the movement speed of the character is basicallymaintained, and therefore a player is able to enjoy running through thecourse at a high movement speed without worrying about sliding off thecourse. In particular, even when the character runs a complicated courseincluding a lot of curves, it is unnecessary to reduce the movementspeed each time the character goes around the curve, thereby allowing aplayer to constantly enjoy running the course at the high movement speedwith excitement. Further, the operation inputted by the player alsoinfluences the moving direction of the player object, and therefore itis possible to represent the technique of the player in the game,whereby the operation corrected by the computer does not deprive theplayer of the enjoyment and excitement provided by the game.

As described above, the forward direction line may be branched or theforward direction lines may be merged. For example, when the forwarddirection line is branched as shown in FIG. 18, the control point P12representing the branching point may have set therefor the forwarddirection vector 61, the upward direction vector 62, the right directionvector 63, and the curve rate 64 for each of a route, from the controlpoint P12, including the control point P13 and a route, from the controlpoint P12, including the control point P20. When the route in which thecharacter is to travel is determined, the advancing direction vector 71of the character, the upward direction vector 72 and the like may bedetermined based on the forward direction vector 61, the upwarddirection vector 62, the right direction vector 63, and the curve rate64 corresponding to the route in which the character is to travel. Anexemplary method for determining the route in which the character is totravel is as follows. The control point (the control point P13 in anexample shown in FIG. 18) which is the nearer, to the current positionPc of the character, of the two control points P13 and P20 each of whichimmediately follows the control point P12 representing the branchingpoint may be determined as a point included in the route in which thecharacter is to travel. One of the route including the control point P13and the route including the control point P20 may be active depending onwhether or not the game state data satisfies a predetermined condition(for example, by using, as a switch, a gimmick and the like in thecourse).

The forward direction line is not necessarily provided along the course.For example, the forward direction line (P40→P41→P33) as shown in FIG.19 may be provided. In this case, even when a player fails to operatethe character and therefore the character strands at the position Pcshown in FIG. 19, the advancing direction of the character isautomatically changed to the direction of the control point P33 based onthe forward direction line (P40→P41→P33). Therefore, the player isallowed to easily move the player character to a favorable position bysimply inputting the acceleration instruction and the leftward movementinstruction for slightly moving the player character in the leftdirection.

While certain example embodiments have described in detail, theforegoing description is in all aspects illustrative and notrestrictive. It is understood that numerous other modifications andvariations can be devised without departing from the scope of theinvention

The invention claimed is:
 1. A non-transitory computer-readable storagemedium having stored thereon a game program for moving an object on acourse in a virtual game world, the game program comprising instructionsthat cause a computer of a game apparatus to: set a virtual camera inthe virtual game world, wherein the virtual camera is set to shoot thecourse based on a course direction; generate, based on the set virtualcamera, an image of the virtual game world, the generated imageincluding the object; display the generated image on a screen of adisplay device; determine a first vector based at least on a currentposition of the object in the virtual game world and direction data setat a control point on the course during gameplay of the game program,wherein the first vector is along the course direction; detect aninstruction inputted by the player; determine a second vector based atleast on the instruction by the player, wherein a direction of thesecond vector is based on a direction of the instruction; and move theobject based at least on the first vector and the second vector whilethe instruction is detected.
 2. The non-transitory computer-readablestorage medium according to claim 1, wherein the game program comprisesfurther instructions that cause the computer to move the object on thecourse within the virtual game world without using the second vectorwhile the instruction is not detected.
 3. The non-transitorycomputer-readable storage medium according to claim 1, wherein the gameprogram comprises further instructions that cause the computer to movethe object on the course within the virtual game world with the firstvector to advance along the course in the virtual game world while theinstruction is not detected.
 4. The non-transitory computer-readablestorage medium according to claim 1, wherein the game program comprisesfurther instructions that cause the computer to move the object on thecourse based on an inertial vector.
 5. The non-transitorycomputer-readable storage medium according to claim 1, wherein the firstvector is determined based at least on the direction data set at thecontrol point in the virtual game world determined at least by thecurrent position of the object.
 6. The non-transitory computer-readablestorage medium according to claim 1, wherein the first vector isdetermined based at least on two directions that are associated with twocontrol points in the virtual game world determined at least by thecurrent position of the object.
 7. The non-transitory computer-readablestorage medium according to claim 1, wherein the first vector and thesecond vector are orthogonal.
 8. The non-transitory computer-readablestorage medium according to claim 1, wherein the object includes aplayer object.
 9. The non-transitory computer-readable storage mediumaccording to claim 1, wherein the game program comprises furtherinstructions that cause the computer of the game apparatus to adjust apose of the virtual camera in accordance with movement of the object.10. The non-transitory computer-readable storage medium according toclaim 1, wherein the virtual camera is set based on a position of theobject on the course.
 11. A game apparatus comprising: an input deviceconfigured to receive input from a user; a processing system thatincludes at least one hardware processor, the processing systemconfigured to: execute a game program for moving an object on a coursethat is located in a virtual game world; set a virtual camera in thevirtual game world, wherein the virtual camera is orientated in adirection that is based on a course direction; generate, based on theset virtual camera, an image of the virtual game world, the generatedimage including the object; display the generated image on a screen of adisplay device; determine a first vector based at least on a currentposition of the object in the virtual game world and direction data setat a control point on the course during gameplay of the game program,wherein the first vector is along the course direction; detect aninstruction inputted by the player; determine a second vector based atleast on the instruction by the player, wherein a direction of thesecond vector is based on a direction of the instruction; and move theobject based at least on the first vector and the second vector.
 12. Thegame apparatus of claim 11, wherein the relative position of the virtualcamera to the object is adjusted based on a calculated forward directionthat is used to control forward movement of the object in the virtualgame world.
 13. A method operated on a computer system that isconfigured to store a video game program that includes gameplay formoving an object on a course that is located in a virtual game world,the method comprising: setting a virtual camera in the virtual gameworld, wherein the virtual camera is set to shoot the course based on acourse direction; generating, based on the set virtual camera, an imageof the virtual game world, the generated image including the object;outputting the generated image to a screen of a display device fordisplay thereon; determining a first vector based at least on a currentposition of the object in the virtual game world and direction data setat a control point on the course during gameplay of the game program,wherein the first vector is along the course direction; processing aninstruction that has been provided by a user of the computer system;determining a second vector based at least on the instruction by theplayer, wherein a direction of the second vector is based on a directionof the instruction; and moving the object based at least on the firstvector and the second vector while the instruction is detected.
 14. Acomputer system comprising: a non-transitory computer readable storagemedium configured to store a video game program for moving an object ona course that is located in a virtual game world; at least one hardwareprocessor configured to: set a virtual camera in the virtual game world,wherein the virtual camera is set to shoot the course based on a coursedirection; generate, based on the set virtual camera, an image of thevirtual game world, the generated image including the object; displaythe generated image on a screen of a display device; determine a firstvector based at least on a current position of the object in the virtualgame world and direction data set at a control point on the courseduring gameplay of the game program, wherein the first vector is alongthe course direction; detect an instruction inputted by the player;determine a second vector based at least on the instruction by theplayer, wherein a direction of the second vector is based on a directionof the instruction; and move the object based at least on the firstvector and the second vector while the instruction is detected.
 15. Thecomputer system of claim 14, wherein the at least one processor isfurther configured to move the object on the course within the virtualgame world without using the second vector while the instruction is notdetected.
 16. The computer system of claim 14, wherein the at least oneprocessor is further configured to move the object on the course basedon an inertial vector.
 17. The computer system of claim 14, wherein thefirst vector is determined based at least on the direction data set atthe control point in the virtual game world determined at least by thecurrent position of the object.
 18. The computer system of claim 14,wherein the at least one processor is further configured to adjust apose of the virtual camera in accordance with movement of the object.19. The computer system of claim 14, wherein the virtual camera is setbased on a position of the object on the course.
 20. The computer systemof claim 14, wherein the at least one processor is further configured tomove the object on the course within the virtual game world with thefirst vector to advance along the course in the virtual game world whilethe instruction is not detected.